﻿


-- 人员考勤明细表
create procedure [dbo].[Report_Rykqmx]
@qybmm varchar(100) = null,
@year varchar(4) = null,
@month varchar(2) = null
as
with aa as(
SELECT sfzh,xm,cnt,[1] d1,[2] d2,[3] d3,[4] d4,[5] d5,[6] d6,[7] d7,[8] d8,[9] d9,[10] d10,[11] d11,
[12] d12,[13] d13,[14] d14,[15] d15,[16] d16,[17] d17,[18] d18,[19] d19,[20] d20,[21] d21,[22] d22,
[23] d23,[24] d24,[25] d25,[26] d26,[27] d27,[28] d28,[29] d29,[30] d30,[31] d31
FROM (select sfzh,xm,mon,dat,count(1) cnt from (select distinct sfzh,xm,datepart(MM,kqsj) mon,datepart(dd,kqsj) dat from Kqjl_Info
where (@year is null or datepart(yyyy,kqsj)=@year) and (@month is null or datepart(MM,kqsj)=@month) and (@qybmm is null or qybmm=@qybmm)) bb group by sfzh,xm,mon,dat) aa
PIVOT(COUNT (dat) FOR dat IN
( [1], [2], [3], [4], [5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],
[24],[25],[26],[27],[28],[29],[30],[31])) p)

select isnull(gh,'') gh,isnull(fbmc,'') zbfbmc,aa.xm,case d1 when 1 then '√' else '' end d1,case d2 when 1 then '√' else '' end d2,
case d3 when 1 then '√' else '' end d3,case d4 when 1 then '√' else '' end d4,
case d5 when 1 then '√' else '' end d5,case d6 when 1 then '√' else '' end d6,
case d7 when 1 then '√' else '' end d7,case d8 when 1 then '√' else '' end d8,
case d9 when 1 then '√' else '' end d9,case d10 when 1 then '√' else '' end d10,
case d11 when 1 then '√' else '' end d11,case d12 when 1 then '√' else '' end d12,
case d13 when 1 then '√' else '' end d13,case d14 when 1 then '√' else '' end d14,
case d15 when 1 then '√' else '' end d15,case d16 when 1 then '√' else '' end d16,
case d17 when 1 then '√' else '' end d17,case d18 when 1 then '√' else '' end d18,
case d19 when 1 then '√' else '' end d19,case d20 when 1 then '√' else '' end d20,
case d21 when 1 then '√' else '' end d21,case d22 when 1 then '√' else '' end d22,
case d23 when 1 then '√' else '' end d23,case d24 when 1 then '√' else '' end d24,
case d25 when 1 then '√' else '' end d25,case d26 when 1 then '√' else '' end d26,
case d27 when 1 then '√' else '' end d27,case d28 when 1 then '√' else '' end d28,
case d29 when 1 then '√' else '' end d29,case d30 when 1 then '√' else '' end d30,
case d31 when 1 then '√' else '' end d31,
d1+d2+d3+d4+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15+d16+d17+d18+d19+d20+d21+d22+d23+d24+d25+d26+d27+d28+d29+d30+d31 cnt
from aa inner join vRyFbInfo on(aa.sfzh=vRyFbInfo.sfzh and aa.xm=vRyFbInfo.xm)